package com.smzd.framework.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 访问角色配置<br>
 * 当用户访问一个Controller的一个方法时，可以传入为该用户对该方法所特别配置的一个角色值。
 * 该角色值将在方法内部进行权限控制，因此方法内部早已经定义了不同的角色值与业务逻辑控制。
 * 系统框架只是手动为访问用户对访问方法进行角色值的配置，可以配置多个。
 * 用户也可以从用户组继承用户组对方法的角色值配置，因此用户组也可以配置访问角色，同样可以配置多个。
 * 如果用户没有配置，则继承用户组的角色值配置；如果用户配置了，则忽略任何用户组的角色值配置。<br><br>
 * 该注解主要加在Controller入口方法参数上，要求字段类型为int/Integer。系统自动注入在该处所配置的角色值。<br>
 * 若此处没有配置角色值，则注入-1/null.
 * 该注解也可以加在Controller上，用来定义该Controller中所使用的AccessRole值的定义和描述。<br>
 * 仅用于描述，用来指导配置时使用。框架会来读取该配置，当管理员配置用户/用户组对访问入口的角色值定义时，
 * 可以从该配置中取参考值。
 * 不定义也可，只是配置的时候不知道应该如何配置，需要参考另外的说明文档。
 * 
 * @author YuZhongda
 *
 */
@Target(value={ElementType.PARAMETER, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AccessRole {
	int[] value() default {};
	String[] desc() default {};
}
